package com.aiolos.wxdc.dataobject;

import lombok.Data;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.util.Date;

/**
 * 数据库表product_category对应的实体类
 *
 * 类名和字段名都采用驼峰命名法,Jpa会自动转换
 */
@Entity
@Data
//@DynamicInsert属性:设置为true表示insert对象的时候,生成动态的insert语句,
// 如果这个字段的值是null就不会加入到insert语句当中.默认true。
//比如希望数据库插入日期或时间戳字段时，在对象字段为空的情况下，表字段能自动填写当前的sysdate。
//这种情况就可以使用@DynamicInsert()
@DynamicInsert()
//@DynamicUpdate设置为true表示update对象的时候,生成动态的update语句,
//如果这个字段的值是null就不会被加入到update语句中,默认true。
//比如只想更新某个属性，但是却把整个对象的属性都更新了，这并不是我们希望的结果，
// 我们希望的结果是：我更改了哪些字段，只要更新我修改的字段就够了,这种情况就可以使用@DynamicUpdate()
@DynamicUpdate()
public class ProductCategory {

    @Id //主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) //自增
    private Integer categoryId;

    private String categoryName;

    private Integer categoryType;

    private Date createTime = new Date();

    private Date updateTime = new Date();

    public ProductCategory(){}

    public ProductCategory(String categoryName, Integer categoryType) {
        this.categoryName = categoryName;
        this.categoryType = categoryType;
    }
}
